package com.eshop.modules.cart.service;

import com.eshop.modules.order.service.dto.CountDto;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import com.eshop.modules.cart.service.dto.StoreCartDto;
import org.springframework.data.domain.Pageable;
import com.eshop.modules.cart.service.dto.StoreCartQueryCriteria;
import java.util.Map;
import java.util.List;
import com.eshop.modules.cart.domain.StoreCart;
import com.eshop.common.service.BaseService;

public interface StoreCartService extends BaseService<StoreCart>
{
    void removeUserCart(final Long uid, final List<String> ids);

    void changeUserCartNum(final Long cartId, final int cartNum, final Long uid);

    Map<String, Object> getUserProductCartList(final Long uid, final String cartIds, final Integer status);

    int getUserCartNum(final Long uid);

    long addCart(final Long uid, final Long productId, final Integer cartNum, final String productAttrUnique, final Integer isNew, final Long combinationId, final Long seckillId, final Long bargainId);

    void checkProductStock(final Long uid, final Long productId, final Integer cartNum, final String productAttrUnique, final Long combinationId, final Long seckillId, final Long bargainId);

    Map<String, Object> queryAll(final StoreCartQueryCriteria criteria, final Pageable pageable);

    List<StoreCart> queryAll(final StoreCartQueryCriteria criteria);

    void download(final List<StoreCartDto> all, final HttpServletResponse response) throws IOException;

    List<CountDto> findCateName();
}
